import 'package:get/get.dart';
import '../services/auth_service.dart';

class LoginController extends GetxController {
  // 弹窗显示状态
  final RxBool isLoginDialogVisible = false.obs;

  // 登录状态
  final RxBool isLoggedIn = false.obs;

  // 用户信息
  final RxString userName = ''.obs;
  final RxString userEmail = ''.obs;
  final RxString loginProvider = ''.obs; // 'apple' or 'google'

  // 认证服务
  late AuthService _authService;

  @override
  void onInit() {
    super.onInit();
    _authService = Get.find<AuthService>();
    _checkAuthState();
  }

  // 检查认证状态
  void _checkAuthState() {
    // final user = _authService.currentUser;
    // if (user != null) {
    //   _updateUserInfo(user);
    // }
  }

  // 更新用户信息
  void _updateUserInfo(Map<String, dynamic> user) {
    isLoggedIn.value = true;
    userName.value =
        user['displayName'] ?? user['email']?.split('@')[0] ?? 'User';
    userEmail.value = user['email'] ?? '';
    loginProvider.value = user['provider'] ?? 'unknown';
  }

  // 显示登录弹窗
  void showLoginDialog() {
    isLoginDialogVisible.value = true;
  }

  // 隐藏登录弹窗
  void hideLoginDialog() {
    isLoginDialogVisible.value = false;
  }

  // 苹果登录
  Future<void> loginWithApple() async {
    try {
      hideLoginDialog();

      // 显示加载状态
      Get.snackbar('登录中', '正在验证身份...', snackPosition: SnackPosition.BOTTOM);

      final result = await _authService.signInWithApple();

      // if (result.success && result.user != null) {
      //   _updateUserInfo(result.user!);
      //   hideLoginDialog();
      //   Get.snackbar('登录成功', '欢迎回来！', snackPosition: SnackPosition.BOTTOM);
      // } else {
      //   Get.snackbar(
      //     '登录失败',
      //     result.error ?? '未知错误',
      //     snackPosition: SnackPosition.BOTTOM,
      //   );
      // }
    } catch (e) {
      Get.snackbar('登录错误', e.toString(), snackPosition: SnackPosition.BOTTOM);
    }
  }

  // 谷歌登录
  Future<void> loginWithGoogle() async {
    try {
      hideLoginDialog();

      // 显示加载状态
      Get.snackbar('登录中', '正在验证身份...', snackPosition: SnackPosition.BOTTOM);

      final result = await _authService.signInWithGoogle();

      if (result.success && result.user != null) {
        _updateUserInfo(result.user!);
        hideLoginDialog();
        Get.snackbar('登录成功', '欢迎回来！', snackPosition: SnackPosition.BOTTOM);
      } else {
        Get.snackbar(
          '登录失败',
          result.error ?? '未知错误',
          snackPosition: SnackPosition.BOTTOM,
        );
      }
    } catch (e) {
      Get.snackbar('登录错误', e.toString(), snackPosition: SnackPosition.BOTTOM);
    }
  }

  // 登出
  Future<void> logout() async {
    try {
      await _authService.signOut();
      userName.value = '';
      userEmail.value = '';
      loginProvider.value = '';
      isLoggedIn.value = false;

      Get.snackbar('已登出', '感谢使用！', snackPosition: SnackPosition.BOTTOM);
    } catch (e) {
      Get.snackbar('登出错误', e.toString(), snackPosition: SnackPosition.BOTTOM);
    }
  }

  // 获取用户显示名称
  String get displayName {
    if (userName.value.isNotEmpty) {
      return userName.value;
    }
    return 'User';
  }

  // 获取用户ID（用于显示）
  String get userId {
    if (userEmail.value.isNotEmpty) {
      return userEmail.value.split('@')[0];
    }
    return '2445850';
  }
}
